package interpreter_pattern.ex1;

import java.util.Arrays;
import java.util.List;

/**
 * @author 申书航
 * @version 1.0
 *
 * 客户端类，负责执行解释器模式中的具体逻辑
 */
public class Client {

    /**
     * 主方法，程序入口
     * 创建表达式树并解析给定的罗马数字字符串
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 创建一个解析树，包含不同的罗马数字表达式
        List<Expression> tree = Arrays.asList(
                new ThousandExpression(),
                new HundredExpression(),
                new TenExpression(),
                new OneExpression()
        );

        // 创建上下文对象并传入罗马数字字符串
        Context ctx = new Context("LXXIV");
        // 遍历解析树，解释每个表达式并更新上下文
        for (Expression exp : tree) {
            exp.interpret(ctx);
        }
        // 输出上下文中的结果
        System.out.println(ctx.getOutput());
    }
}

